<?
class bewonersGroepModel extends db_abstract implements db_interface{

	private static $instance;
	
	public function __construct($iDb){
	
		parent::__construct($iDb);
	
	}
	
	
	public static function getInstance($iDb){
	
		if(self::$instance == NULL){
			self::$instance = new self($iDb);
		}
		
		return self::$instance;
	
	
	}
	
	
	public function getIdFromTitel(user_bewonersgroep $iUser){
	
		if($query = $this -> db -> prepare("SELECT b.bew_id FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE b.bew_titel = ? and g.geb_verwijderd = 0")){
		
		$bindValue = $iUser -> titel;
		
		
		
		$query -> bind_param('s', $bindValue);
		
		$query -> execute();
		$query -> store_result();
		
		if($query -> num_rows() > 0){
			
			$query -> bind_result($id);
		
			$query -> fetch();
		
			$iUser -> id = $id;
			
			return true;
		
		
		}else{
			return false;
		}
	
		
		
		}else{
		
			return false;
		
		}

		
	
	}
	
	
	public function fill(user_bewonersgroep $iUser){
	
		$query = $this -> db -> prepare("SELECT b.bew_id,b.bew_verantwoordelijke,b.bew_locatie,b.bew_coordinaten,b.bew_foto_path,b.bew_beschrijving,b.bew_email_zichtbaar,b.bew_titel,b.bew_rechten FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE b.bew_id = ? and g.geb_verwijderd = 0");
		
		$bindValue = $iUser -> id;
		
		
		
		$query -> bind_param('i', $bindValue);
		
		$query -> execute();
		
		$query -> bind_result($id, $verantw, $locatie, $coor, $foto_path, $beschrijving, $emailZichtb, $titel, $rechten);
		
		$query -> fetch();
		
		
		
		
		$iUser -> verantwoordelijke = $verantw;
		$iUser -> locatie = $locatie;
		$iUser -> coords = $coor;
		$iUser -> foto_path = $foto_path;
		$iUser -> beschrijving = $beschrijving;
		$iUser -> emailZichtbaar = $emailZichtb;
		$iUser -> titel = $titel;
		$iUser -> rechten = $rechten;
		
		
	
	}
	
	
	public function add(user_bewonersgroep $iUser){
	
	
	$query = $this -> db -> prepare("CALL bewonersgroepAdd(?, ?, ?, ?, ?, ?,?)");	
	
	$this -> bindVars($query,array($iUser -> name, sha1($iUser -> password),$iUser -> email, $iUser -> verantwoordelijke, $iUser -> titel, '/public/images/noLogo.jpg', $iUser -> locatie));
	
	
	
	$query -> execute();
	
	mkdir('./public/bewonersgroepen/' . $iUser -> titel);

	
	}
	
	
	
	public function getBewonersgroepen(){
	
	
	$query = $this -> db -> query("SELECT b.bew_id ,b.bew_titel, b.bew_locatie, b.bew_coordinaten, b.bew_foto_path FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE g.geb_verwijderd = 0 ORDER BY b.bew_titel ASC");	
	
	$users = array();
	
	while($row = $query -> fetch_assoc()){
	
	
		$geb = new user_bewonersgroep();
		$geb -> id = $row['bew_id'];
		$geb -> titel = $row['bew_titel'];
		$geb -> locatie = $row['bew_locatie'];
		$geb -> coords = $row['bew_coordinaten'];
		$geb -> foto_path = $row['bew_foto_path'];
		
		
		
		$users[] = $geb;
		
	
	
	
	}
	
	return $users;
	

	
	}
	
	public function getBewonersgroepenByFirstLetter($letter){
	
	$input = $this -> db -> real_escape_string($letter);
	
	if($input == '#'){
	
		
		$query = $this -> db -> prepare("SELECT b.bew_id,b.bew_titel, b.bew_locatie FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE b.bew_titel LIKE '[0-9]%' and g.geb_verwijderd = 0  ORDER BY b.bew_titel ASC");
	
	}else{
	
	$query = $this -> db -> prepare("SELECT b.bew_id,b.bew_titel, b.bew_locatie FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE b.bew_titel LIKE '".$input."%' and g.geb_verwijderd = 0 ORDER BY bew_titel ASC");	
	}
	
	
	$query -> execute();
	
	$query -> bind_result($id, $titel, $loc);
	
	$users = array();
	
	while($query -> fetch()){
	
	
		$geb = new user_bewonersgroep();
		$geb -> id = $id;
		$geb -> titel = $titel;
		$geb -> locatie = $loc;
		
		
		
		$users[] = $geb;
		
	
	
	
	}
	
	return $users;
	

	
	}

	
	
	
		public function getBewonersgroepenByLocatie($input){
	
	$input = $this -> db -> real_escape_string($input);
	
	
		
		$query = $this -> db -> prepare("SELECT b.bew_titel, bew_locatie FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE b.bew_locatie LIKE '%".$input."%' and g.geb_verwijderd = 0 ORDER BY b.bew_titel ASC");
	
	
	
	$query -> execute();
	
	$query -> bind_result($titel, $loc);
	
	$users = array();
	
	while($query -> fetch()){
	
	
		$geb = new user_bewonersgroep();
		$geb -> titel = $titel;
		$geb -> locatie = $loc;
		
		
		
		$users[] = $geb;
		
	
	
	
	}
	
	return $users;
	

	
	}
	
	
	public function getBewonersgroepenByNaam($input){
	
	$input = $this -> db -> real_escape_string($input);
	
	
		
		$query = $this -> db -> prepare("SELECT b.bew_titel, b.bew_locatie FROM bewonersgroep b join gebruikers g on(b.bew_id = g.geb_id) WHERE b.bew_titel LIKE '%".$input."%' and g.geb_verwijderd = 0 ORDER BY bew_titel ASC");
	
	
	
	$query -> execute();
	
	$query -> bind_result($titel, $loc);
	
	$users = array();
	
	while($query -> fetch()){
	
	
		$geb = new user_bewonersgroep();
		$geb -> titel = $titel;
		$geb -> locatie = $loc;
		
		
		
		$users[] = $geb;
		
	
	
	
	}
	
	return $users;
	

	
	}

	
	
	
	public function update(user_bewonersgroep $iUser){
	
		if(is_array($iUser -> foto) && array_key_exists('tmp_name',$iUser -> foto)){
	
			$file = new uploadFile($iUser -> foto);
			
			// randomnaam aanmaken
			$random = new random(20);
			
			$file -> setName($random -> generateNext());
			$file -> setPath('./public/bewonersgroepen/' . $iUser -> titel);
			
			
			
			while(file_exists($file -> getFullPath())){
				
				$file -> setName($random -> generateNext());
				
			}
			
			
			if($file -> upload()){
			
				if($iUser -> foto_path != '' && file_exists($iUser -> foto_path)){
					
					unlink($iUser -> foto_path);
				
				}
				
				$file -> resize(220);
				
				$iUser -> foto_path = '/public/bewonersgroepen/' . $iUser -> titel . '/' . $file -> getName();
			}else{
			
				return false;
			
			}
				
					
			
			
				
		}
	
	
	if($query = $this -> db -> prepare("CALL bewonersgroepUpdate(?,?,?,?,?,?,?,?,?,?,?,?)")){

		$binds = array($iUser -> verantwoordelijke,$iUser -> email, $iUser -> tel, $iUser -> emailZichtbaar, $iUser -> id, $iUser -> titel, $iUser -> locatie, $iUser -> coords, $iUser -> beschrijving, $iUser -> rechten, $iUser -> name, $iUser -> foto_path);
		
		$this -> bindVars($query, $binds);

		$query -> execute();
		
		
		
	}else{
	
		return false;
	
	}
	
	
	return true;
	
}
	public function updateRechten($iUserId,$iRechten){
		$query = $this -> db -> prepare("CALL rechtenUpd(?,?)");	
		$bindingvars=array($iUserId,$iRechten);
		$this -> bindVars($query,$bindingvars);
		$query -> execute();	
	}

	public function updatePas(user_bewonersgroep $iUser){
		$query = $this -> db -> prepare('update gebruikers set geb_pas = ? where geb_id = ?;');
		$bindingvars=array(sha1($iUser -> password),$iUser -> id);
		$this -> bindVars($query,$bindingvars);
		$query -> execute();
	
	}
}


?>